package org.example.other;

/**
 * 自定义一个枚举类型
 * 注意: class是普通类, enum是枚举类 (Java中一种特殊的类型,用来枚举对象)
 * 枚举类的特点:
 * 1. 枚举类的构造方法默认是私有的
 */
public enum ErrorEnum {
    // 在枚举类的内部进行对象枚举, 必须写在最上方, 结尾用分号结束
    // 枚举对象默认是public static final修饰的
    // 此处用到一种特殊的构造对象语法, 直接把对象名当作构造函数用
    // 如下: SUCCESS是枚举出来的一个对象,对象中有2个成员: code和message
    // SUCCESS可以被外部使用ErrorEnum.SUCCESS访问到,并使用get方法取出对象中的成员
    // 枚举的对象名全部用全大写命名, 因为他是静态常量
    // 多个对象之间用逗号分割, 结尾用分号
    SUCCESS(10000, "请求成功"),
    ACCOUNT_NOT_EXISTS(10001, "账户不存在"),
    PASSWORD_ERROR(10002, "密码错误"),
    SUPPLIER_NOT_CERTIFIED(10003, "供应商未认证"),
    SUPPLIER_NOT_COOPERATE(10004, "供应商未合作"),
    SERVER_ERROR(10005, "服务器异常"),
    ACCOUNT_IS_DISABLED(10006, "账号被禁用"),
    LOGIN_EXPIRATION(10007, "登录已过期"),
    MATERIAL_EXISTS(10008, "物资已存在"),
    PERMISSION_DENIED(10009, "权限不足");
    // 枚举类的构造方法默认是私有的,不允许写public权限
    ErrorEnum(Integer code, String message) {
        this.code = code;
        this.message = message;
    }
    // 错误码
    private Integer code;
    // 错误信息
    private String message;

    // 只提供get方法, 不提供set方法, 所有的成员对象只读, 不可修改
    public Integer getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }
}
